package cn.lasse.springframework.beans.factory;

import cn.lasse.springframework.beans.BeansException;
import cn.lasse.springframework.beans.factory.config.AutowireCapableBeanFactory;
import cn.lasse.springframework.beans.factory.config.BeanDefinition;
import cn.lasse.springframework.beans.factory.config.BeanPostProcessor;
import cn.lasse.springframework.beans.factory.config.ConfigurableBeanFactory;

public interface ConfigurableListableBeanFactory extends ListableBeanFactory, AutowireCapableBeanFactory, ConfigurableBeanFactory {

    BeanDefinition getBeanDefinition(String beanName) throws BeansException;

    @Override
    void addBeanPostProcessor(BeanPostProcessor beanPostProcessor);

    /**
     * 实例化之前的单例
     * @throws BeansException
     */
    void preInstantiateSingletons() throws BeansException;
}